package src.main.java;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.LockSupport;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ws
 * Date: 2024-01-03
 * Time: 20:34
 */
public class T9 {
    public static void main(String[] args) {
        String s1 = new StringBuilder("hello").append(" ").append("world").toString();
        System.out.println(s1);
        System.out.println(s1.intern());
        System.out.println(s1 == s1.intern());
        System.out.println(s1.equals(s1.intern()));

        System.out.println();
        System.out.println("============");
        System.out.println();

        String s2 = new StringBuilder("ja").append("va").toString();
        System.out.println(s2);
        System.out.println(s2.intern());
        System.out.println(s2 == s2.intern());// ？？？？？竟然是 false

        /**
         * 类加载器中自带有该字符串（System 源码中）
         * 有一个初始化的java字符串(JDK出娘胎自带的)，在加载 sun.misc.Version这个类的时候进入常量池
         * inter （首次遇到原则）
         * inter 遇到相同的字符串，只会存储首次遇到的字符串地址（java 在 jvm 初始化时已经存在，所以后面的 inter 不能改变）
         * 《深入理解 java 虚拟机》中的原题
         *
         */

        System.out.println(s2.equals(s2.intern()));

    }
}
